#Boa:Dialog:CajaDetallesVentas

import wx
import wx.calendar
import wx.grid
import consultasBD
import utiles
import time
import datetime

def create(parent):
    return CajaDetallesVentas(parent)

[wxID_CAJADETALLESVENTAS, wxID_CAJADETALLESVENTASGRID1, 
 wxID_CAJADETALLESVENTASIMPRIMIR, wxID_CAJADETALLESVENTASINFECHA, 
 wxID_CAJADETALLESVENTASSTATICTEXT1, wxID_CAJADETALLESVENTASSTATICTEXT2, 
 wxID_CAJADETALLESVENTASSTATICTEXT3, wxID_CAJADETALLESVENTASSTATICTEXT4, 
 wxID_CAJADETALLESVENTASSTATICTEXT5, wxID_CAJADETALLESVENTASTEXT1, 
 wxID_CAJADETALLESVENTASTEXT2, wxID_CAJADETALLESVENTASTEXTEGRESO, 
 wxID_CAJADETALLESVENTASTEXTINGRESO, 
] = [wx.NewId() for _init_ctrls in range(13)]

class CajaDetallesVentas(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_CAJADETALLESVENTAS,
              name='CajaDetallesVentas', parent=prnt, pos=wx.Point(149, 71),
              size=wx.Size(786, 398), style=wx.DEFAULT_DIALOG_STYLE,
              title='Detalle de Ventas')
        self.SetClientSize(wx.Size(770, 362))

        self.grid1 = wx.grid.Grid(id=wxID_CAJADETALLESVENTASGRID1, name='grid1',
              parent=self, pos=wx.Point(0, 32), size=wx.Size(704, 264),
              style=0)

        self.staticText1 = wx.StaticText(id=wxID_CAJADETALLESVENTASSTATICTEXT1,
              label='Listar Mov. Por otras fechas:', name='staticText1',
              parent=self, pos=wx.Point(16, 8), size=wx.Size(140, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_CAJADETALLESVENTASSTATICTEXT2,
              label='Total Vendido en 1:', name='staticText2', parent=self,
              pos=wx.Point(259, 305), size=wx.Size(94, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_CAJADETALLESVENTASSTATICTEXT3,
              label='Total Vendido en 2:', name='staticText3', parent=self,
              pos=wx.Point(259, 329), size=wx.Size(94, 13), style=0)

        self.infecha = wx.DatePickerCtrl(id=wxID_CAJADETALLESVENTASINFECHA,
              name='infecha', parent=self, pos=wx.Point(168, 8),
              size=wx.Size(96, 21), style=wx.DP_DROPDOWN)
        self.infecha.SetToolTipString('infecha')
        self.infecha.Bind(wx.EVT_DATE_CHANGED, self.OnInfechaDateChanged,
              id=wxID_CAJADETALLESVENTASINFECHA)

        self.staticText4 = wx.StaticText(id=wxID_CAJADETALLESVENTASSTATICTEXT4,
              label='Ingresos:', name='staticText4', parent=self,
              pos=wx.Point(457, 304), size=wx.Size(46, 13), style=0)

        self.staticText5 = wx.StaticText(id=wxID_CAJADETALLESVENTASSTATICTEXT5,
              label='Egresos:', name='staticText5', parent=self,
              pos=wx.Point(456, 327), size=wx.Size(42, 13), style=0)

        self.textingreso = wx.StaticText(id=wxID_CAJADETALLESVENTASTEXTINGRESO,
              label='staticText6', name='textingreso', parent=self,
              pos=wx.Point(512, 304), size=wx.Size(54, 13), style=0)

        self.textegreso = wx.StaticText(id=wxID_CAJADETALLESVENTASTEXTEGRESO,
              label='ss', name='textegreso', parent=self, pos=wx.Point(512,
              327), size=wx.Size(10, 13), style=0)

        self.text1 = wx.StaticText(id=wxID_CAJADETALLESVENTASTEXT1,
              label='staticText6', name='text1', parent=self, pos=wx.Point(362,
              306), size=wx.Size(54, 13), style=0)

        self.text2 = wx.StaticText(id=wxID_CAJADETALLESVENTASTEXT2,
              label='staticText6', name='text2', parent=self, pos=wx.Point(362,
              329), size=wx.Size(54, 13), style=0)

        self.imprimir = wx.Button(id=wxID_CAJADETALLESVENTASIMPRIMIR,
              label='Imprimir', name='imprimir', parent=self, pos=wx.Point(80,
              311), size=wx.Size(112, 24), style=0)
        self.imprimir.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              'Tahoma'))
        self.imprimir.Bind(wx.EVT_BUTTON, self.OnImprimirButton,
              id=wxID_CAJADETALLESVENTASIMPRIMIR)

    def __init__(self, parent,fecha):
        self._init_ctrls(parent)
        #hoy = time.strptime(fecha,"%d-%m-%y")
        #fechaPago = datetime.datetime(hoy.tm_year, hoy.tm_mon, hoy.tm_mday)
        self.fechapago = fecha 
        #str(fechaPago.strftime("%Y-%m-%d"))
        self.cargaGrilla()
        self.datosCaja = []
        self.validar_caja_cerrada("")
        
    def validar_caja_cerrada(self, fecha):
        self.imprimir.Enable(True)
        #if not utiles.isCajaCerrada(fecha):
        #    self.imprimir.Enable(False)        

    def cargaGrilla(self):
        condicion = "fecha='%s'" % (self.fechapago)
        self.grillatamanio = consultasBD.cajaValoresDetallesCuentaFilas(self,"*",condicion)
        self.aux=0
        self.grid1.CreateGrid(100,7)
        self.datosCaja =[]
        
        self.columnas2 =['Nro de Venta ',' Fecha    ','Forma Venta/Egreso/ingres','  Origen           ','   Monto  ',' Sucursal  ','Tipo de Mov.']
        for i, col in enumerate(self.columnas2): 
            self.grid1.SetColLabelValue(i, col)
            
        self.grid1.AutoSizeRow(0,True)
        self.grid1.AutoSizeColumn(0,True)
        self.grid1.AutoSizeColumn(1,True)
        self.grid1.AutoSizeColumn(2,True)
        self.grid1.AutoSizeColumn(3,True)
        self.grid1.AutoSizeColumn(4,True)
        self.grid1.AutoSizeColumn(5,True)
        self.grid1.AutoSizeColumn(6,True)
        condicion = "fecha='%s'" % (self.fechapago)
        resultados = consultasBD.cajaValoresDetalles(self,"*",condicion)
        i =0 
        for r in resultados:
            self.grid1.SetCellValue(i, 0, str(r[0])) #
            self.grid1.SetCellValue(i, 1, str(r[1])) #
            self.grid1.SetCellValue(i, 2, str(r[2])) #
            self.grid1.SetCellValue(i, 3, str(r[3])) #
            self.grid1.SetCellValue(i, 4, str(r[4])) #
            self.grid1.SetCellValue(i, 5, str(r[5])) #
            self.grid1.SetCellValue(i, 6, str(r[6])) #
            fila = [r[0],r[1],r[2], r[3],str(round(r[4],2)),r[5],r[6]]
            print fila
            self.datosCaja.append(fila)
            i = i + 1
            
        self.totales()
        
        for x in xrange(100):
            for i in xrange(len(self.columnas2)):
                self.grid1.SetReadOnly(x,i,True)        


    def OnInfechaDateChanged(self, event):
        fecha = self.infecha.GetValue()
        self.fecha = utiles.formatear_fecha_date2(fecha)
        #limpia
        self.datosCaja =[]
        condicion = "fecha='%s'" % (self.fecha)
        self.grillatamanio2 = consultasBD.cajaValoresDetallesCuentaFilas(self,"*",condicion)
        for x in xrange(100):
            for y in xrange(7):
                self.grid1.SetCellValue(x,y,"")
        
        
        
        if self.grillatamanio2 > 0 :
            resultados = consultasBD.cajaValoresDetalles(self,"*",condicion)
            i =0 
            for r in resultados:
                self.grid1.SetCellValue(i, 0, str(r[0]))#
                self.grid1.SetCellValue(i, 1, str(r[1])) #
                self.grid1.SetCellValue(i, 2, str(r[2])) #
                self.grid1.SetCellValue(i, 3, str(r[3])) #
                self.grid1.SetCellValue(i, 4, str(round(r[4],2))) #
                self.grid1.SetCellValue(i, 5, str(r[5])) #
                self.grid1.SetCellValue(i, 6, str(r[6])) #
                fila = [r[0],r[1],r[2], r[3],str(round(r[4],2)),r[5],r[6]]
                print fila
                self.datosCaja.append(fila)
                i = i + 1
                 
        self.totales()
        self.validar_caja_cerrada(self.fecha)
        
    def totales(self):
        self.en1 = 0.0
        self.en2 = 0.0
        self.ingreso = 0.0
        self.egreso = 0.0
        
        for x in xrange(100):
            if self.grid1.GetCellValue(x,2) == "1":
                self.en1 += float(self.grid1.GetCellValue(x,4))
            elif self.grid1.GetCellValue(x,2) == "2":
                self.en2 += float(self.grid1.GetCellValue(x,4))
            elif self.grid1.GetCellValue(x,2) == "Ingreso":
                self.ingreso += float(self.grid1.GetCellValue(x,4))
            elif self.grid1.GetCellValue(x,2) == "Egreso":
                self.egreso += float(self.grid1.GetCellValue(x,4))
       
        self.text1.SetLabel(str(self.en1))
        self.text2.SetLabel(str(self.en2))
        self.textingreso.SetLabel(str(self.ingreso))
        self.textegreso.SetLabel(str(self.egreso))

    def OnImprimirButton(self, event):
        utiles.reporte_html(self.datosCaja, self.columnas2, "")
    
